class Solution(object):
    def generate(self, numRows):
        """
        :type numRows: int
        :rtype: List[List[int]]
        给定一个非负整数 numRows，生成「杨辉三角」的前 numRows 行。
        在「杨辉三角」中，每个数是它左上方和右上方的数的和。
        """
        '''
        对于杨辉三角而言，每个数是他左上方和右上方数的哈，实际上就是，上一个数组i的位置以及i+1的位置
        这其中的关键是，每循环一次要创建一个数组出来。
        用列表来存储每一行的数组
        '''
        ret = list() # 新建空列表
        for i in range(numRows): # 开始循环
            row = list() # 存储每行的数据 每次循环都会刷新
            for j in range(0, i + 1): # 开始生成数据 0,i+1是为了生成所有元素， 例如 第0行有i+1个元素，也就是1个元素。
                if j == 0 or j == i: # 首尾的数据要为1
                    row.append(1)
                else:  # i-1表示上一个列表元素、j-1是左上方是数据，j是右上方的数据。
                    row.append(ret[i - 1][j-1] + ret[i - 1][j]) # 注意注意，这里的拿的是上一个列表元素的数据。
            ret.append(row) # 添加列表元素
        return ret




# 实例对象
solution = Solution()

# 测试用例
numRows = 3
arrayMe = solution.generate(numRows) # 获取返回的数组
# 循环遍历输出
for i in arrayMe:
    print(i)


